package dao;

import java.util.ArrayList;
import java.util.List;

import model.Byggebunke;
import model.Fralaegningsbunke;
import model.Grundbunke;
import model.Midterbunke;
import model.Skipbokort;
import model.Spiller;

/**
 * @author Skip-Bo Team
 */
public class Dao {
	private static Dao unique;
	
	public static Dao getInstance(){
		if(unique == null){
			unique = new Dao();
		}
		return unique;
	}
	private Skipbokort skipbokort;
	private List<Grundbunke> grundbunke = new ArrayList<Grundbunke>();
	private List<Spiller> spillere = new ArrayList<Spiller>();	
	private List<Byggebunke> byggebunke = new ArrayList<Byggebunke>();
	private List<Fralaegningsbunke> fralaegningsbunke = new ArrayList<Fralaegningsbunke>();
	private Midterbunke midterbunke;
	private List<Spiller> ingame = new ArrayList<Spiller>();
	public Dao(){
		
	}
	//----------------------------------------Spiller-----------------------------------------------
	/**
	 * Gem spiller.
	 */
	public void gemSpiller(Spiller spiller){
		spillere.add(spiller);
	}
	/**
	 * Hent alle skipbo bunkerne.
	 */
	public List<Spiller>getSpillere(){
		return new ArrayList<Spiller>(spillere);
	}
	/**
	 * Gem spillere som spiller nu.
	 * @param skipbokort
	 */
	public void gemSpillerIngame(Spiller spiller){
		ingame.add(spiller);
	}
	/**
	 * Hent listen af spillere ingame nu.
	 * @param skipbokort
	 */
	public List<Spiller>getIngameSpillere(){
		return new ArrayList<Spiller>(ingame);
	}
	public void fjernIngameSpiller(Spiller spiller) {
		ingame.remove(spiller);		
	}
	public void setIngameSpiller(int i, Spiller spiller){
		ingame.set(i,spiller);
	}
	//----------------------------------------Skipbokort------------------------------------------------------
	public void setSkipbokort(Skipbokort skipbokort){
		this.skipbokort = skipbokort;
	}
	public Skipbokort getSkipbokort(){
		return skipbokort;
	}
	//---------------------------------------Grundbunke-------------------------------------------------------
	public void gemGrundbunke(Grundbunke grundbunke){
		this.grundbunke.add(grundbunke);
	}
	public List<Grundbunke>getGrundbunke(){
		return new ArrayList<Grundbunke>(grundbunke);
	}
	//---------------------------------------Byggebunke-------------------------------------------------------
	public void gemByggebunke(Byggebunke byggebunke){
		this.byggebunke.add(byggebunke);
	}
	public List<Byggebunke>getByggebunke(){
		return new ArrayList<Byggebunke>(byggebunke);
	}
	//---------------------------------------Fralaegningsbunke------------------------------------------------
	public void gemFralaegningsbunke(Fralaegningsbunke fralaegningsbunke){
		this.fralaegningsbunke.add(fralaegningsbunke);
	}
	public List<Fralaegningsbunke>getFralaegningsbunke(){
		return new ArrayList<Fralaegningsbunke>(fralaegningsbunke);
	}
	//---------------------------------------Midterbunke------------------------------------------------------
	public void setMidterbunke(Midterbunke midterbunke){
		this.midterbunke = midterbunke;
	}
	public Midterbunke getMidterbunke(){
		return midterbunke;
	}
	
}
